home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / ClipPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  7KB  |  325 lines

  1. /*
  2. **    ClipPanel.c
  3. **
  4. **    Editing panel for clipboard configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_UNIT=1000,GAD_USE,GAD_CANCEL,
  17.             GAD_PAGER,GAD_PAGEGROUP
  18.         };
  19.  
  20. BOOL
  21. ClipPanel(struct Window *Parent,struct Configuration *LocalConfig)
  22. {
  23.     STATIC LONG PageTitleID[3] =
  24.     {
  25.         MSG_V36_0019,
  26.         MSG_V36_0020,
  27.         -1
  28.     };
  29.  
  30.     STATIC BYTE InitialPage = 0;
  31.  
  32.     LayoutHandle *Handle;
  33.     BOOL UseIt;
  34.  
  35.     UseIt = FALSE;
  36.  
  37.     SaveConfig(LocalConfig,PrivateConfig);
  38.  
  39.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  40.         LAHN_LocaleHook,    &LocaleHook,
  41.         LAHN_ExitFlush,        FALSE,
  42.     TAG_DONE))
  43.     {
  44.         struct Window *PanelWindow;
  45.  
  46.         LT_New(Handle,
  47.             LA_Type,    VERTICAL_KIND,
  48.         TAG_DONE);
  49.         {
  50.             LT_New(Handle,
  51.                 LA_Type,VERTICAL_KIND,
  52.             TAG_DONE);
  53.             {
  54.                 LT_New(Handle,
  55.                     LA_Type,        TAB_KIND,
  56.                     LA_ID,            GAD_PAGER,
  57.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  58.                     LACY_LabelTable,PageTitleID,
  59.                     LACY_AutoPageID,GAD_PAGEGROUP,
  60.                     LACY_TabKey,    TRUE,
  61.                     LA_BYTE,        &InitialPage,
  62.                     LATB_FullWidth,    TRUE,
  63.                 TAG_DONE);
  64.  
  65.                 LT_EndGroup(Handle);
  66.             }
  67.  
  68.             LT_New(Handle,
  69.                 LA_Type,        VERTICAL_KIND,
  70.                 LA_ID,            GAD_PAGEGROUP,
  71.                 LAGR_ActivePage,InitialPage,
  72.             TAG_DONE);
  73.             {
  74.                 LT_New(Handle,
  75.                     LA_Type,    VERTICAL_KIND,
  76.                 TAG_DONE);
  77.                 {
  78.                     LT_New(Handle,
  79.                         LA_Type,    VERTICAL_KIND,
  80.                     TAG_DONE);
  81.                     {
  82.                         LT_New(Handle,
  83.                             LA_Type,                INTEGER_KIND,
  84.                             LA_LabelID,                MSG_CLIPPANEL_UNIT_GAD,
  85.                             LA_WORD,                &PrivateConfig->ClipConfig->ClipboardUnit,
  86.                             LA_Chars,                20,
  87.                             LAIN_Min,                0,
  88.                             LAIN_Max,                255,
  89.                             LA_ID,                    GAD_UNIT,
  90.                             LAIN_UseIncrementers,    TRUE,
  91.                             GTIN_MaxChars,            3,
  92.                         TAG_DONE);
  93.  
  94.                         LT_New(Handle,
  95.                             LA_Type,    XBAR_KIND,
  96.                         TAG_DONE);
  97.  
  98.                         LT_New(Handle,
  99.                             LA_Type,        STRING_KIND,
  100.                             LA_LabelID,        MSG_CLIPPANEL_PASTE_PREFIX_GAD,
  101.                             LA_STRPTR,        PrivateConfig->ClipConfig->InsertPrefix,
  102.                             GTST_MaxChars,    sizeof(PrivateConfig->ClipConfig->InsertPrefix) - 1,
  103.                         TAG_DONE);
  104.  
  105.                         LT_New(Handle,
  106.                             LA_Type,        STRING_KIND,
  107.                             LA_LabelID,        MSG_CLIPPANEL_PASTE_SUFFIX_GAD,
  108.                             LA_STRPTR,        PrivateConfig->ClipConfig->InsertSuffix,
  109.                             GTST_MaxChars,    sizeof(PrivateConfig->ClipConfig->InsertSuffix) - 1,
  110.                         TAG_DONE);
  111.  
  112.                         LT_New(Handle,
  113.                             LA_Type,        XBAR_KIND,
  114.                         TAG_DONE);
  115.  
  116.                         LT_EndGroup(Handle);
  117.                     }
  118.  
  119.                     LT_New(Handle,
  120.                         LA_Type,    VERTICAL_KIND,
  121.                     TAG_DONE);
  122.                     {
  123.                         LT_New(Handle,
  124.                             LA_Type,    CHECKBOX_KIND,
  125.                             LA_LabelID,    MSG_CONVERT_LF_TXT,
  126.                             LA_BYTE,    &PrivateConfig->ClipConfig->ConvertLF,
  127.                         TAG_DONE);
  128.  
  129.                         LT_EndGroup(Handle);
  130.                     }
  131.  
  132.                     LT_EndGroup(Handle);
  133.                 }
  134.  
  135.                 LT_New(Handle,
  136.                     LA_Type,    VERTICAL_KIND,
  137.                 TAG_DONE);
  138.                 {
  139.                     LT_New(Handle,
  140.                         LA_Type,    VERTICAL_KIND,
  141.                     TAG_DONE);
  142.                     {
  143.                         LT_New(Handle,
  144.                             LA_Type,        CYCLE_KIND,
  145.                             LA_LabelID,        MSG_CLIPPANEL_TEXT_PACING_GAD,
  146.                             LA_UBYTE,        &PrivateConfig->ClipConfig->PacingMode,
  147.                             LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  148.                             LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  149.                         TAG_DONE);
  150.  
  151.                         LT_EndGroup(Handle);
  152.                     }
  153.  
  154.                     LT_New(Handle,
  155.                         LA_Type,    VERTICAL_KIND,
  156.                         LA_LabelID,    MSG_V36_0021,
  157.                     TAG_DONE);
  158.                     {
  159.                         LT_New(Handle,
  160.                             LA_Type,            SliderType,
  161.                             LA_LabelID,            MSG_CLIPPANEL_CHAR_DELAY_GAD,
  162.                             GTSL_Min,            0,
  163.                             GTSL_Max,            10 * 100,
  164.                             LA_Chars,            10,
  165.                             LA_WORD,            &PrivateConfig->ClipConfig->CharDelay,
  166.                             GTSL_LevelFormat,    "%s s",
  167.                             GTSL_DispFunc,        StandardShowTime,
  168.                         TAG_DONE);
  169.  
  170.                         LT_New(Handle,
  171.                             LA_Type,            SliderType,
  172.                             LA_LabelID,            MSG_CLIPPANEL_LINE_DELAY_GAD,
  173.                             GTSL_Min,            0,
  174.                             GTSL_Max,            10 * 100,
  175.                             LA_Chars,            10,
  176.                             LA_WORD,            &PrivateConfig->ClipConfig->LineDelay,
  177.                             GTSL_LevelFormat,    "%s s",
  178.                             GTSL_DispFunc,        StandardShowTime,
  179.                         TAG_DONE);
  180.  
  181.                         LT_EndGroup(Handle);
  182.                     }
  183.  
  184.                     LT_New(Handle,
  185.                         LA_Type,    VERTICAL_KIND,
  186.                         LA_LabelID,    MSG_V36_0024,
  187.                     TAG_DONE);
  188.                     {
  189.                         LT_New(Handle,
  190.                             LA_Type,            STRING_KIND,
  191.                             LA_LabelID,            MSG_CLIPPANEL_LINE_PROMPT_GAD,
  192.                             LA_STRPTR,            PrivateConfig->ClipConfig->LinePrompt,
  193.                             LA_Chars,            10,
  194.                             GTST_MaxChars,        sizeof(PrivateConfig->ClipConfig->LinePrompt) - 1,
  195.                         TAG_DONE);
  196.  
  197.                         LT_New(Handle,
  198.                             LA_Type,            SliderType,
  199.                             LA_LabelID,            MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  200.                             GTSL_Min,            0,
  201.                             GTSL_Max,            10 * 100,
  202.                             LA_WORD,            &PrivateConfig->ClipConfig->SendTimeout,
  203.                             GTSL_LevelFormat,    "%s s",
  204.                             GTSL_DispFunc,        StandardShowTime,
  205.                         TAG_DONE);
  206.  
  207.                         LT_EndGroup(Handle);
  208.                     }
  209.  
  210.                     LT_EndGroup(Handle);
  211.                 }
  212.  
  213.                 LT_EndGroup(Handle);
  214.             }
  215.  
  216.             LT_New(Handle,
  217.                 LA_Type,VERTICAL_KIND,
  218.             TAG_DONE);
  219.             {
  220.                 LT_New(Handle,
  221.                     LA_Type,        XBAR_KIND,
  222.                     LAXB_FullSize,    TRUE,
  223.                 TAG_DONE);
  224.  
  225.                 LT_EndGroup(Handle);
  226.             }
  227.  
  228.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  229.                 LAGR_SameSize,    TRUE,
  230.                 LAGR_Spread,    TRUE,
  231.             TAG_DONE);
  232.             {
  233.                 LT_New(Handle,
  234.                     LA_Type,        BUTTON_KIND,
  235.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  236.                     LA_ID,            GAD_USE,
  237.                     LABT_ReturnKey,    TRUE,
  238.                     LABT_ExtraFat,    TRUE,
  239.                 TAG_DONE);
  240.  
  241.                 LT_New(Handle,
  242.                     LA_Type,        BUTTON_KIND,
  243.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  244.                     LA_ID,            GAD_CANCEL,
  245.                     LABT_EscKey,    TRUE,
  246.                     LABT_ExtraFat,    TRUE,
  247.                 TAG_DONE);
  248.  
  249.                 LT_EndGroup(Handle);
  250.             }
  251.  
  252.             LT_EndGroup(Handle);
  253.         }
  254.  
  255.         if(PanelWindow = LT_Build(Handle,
  256.             LAWN_TitleID,        MSG_CLIPPANEL_CLIP_SETTINGS_TXT,
  257.             LAWN_HelpHook,        &GuideHook,
  258.             LAWN_Parent,        Parent,
  259.             WA_DepthGadget,        TRUE,
  260.             WA_DragBar,            TRUE,
  261.             WA_RMBTrap,            TRUE,
  262.             WA_Activate,        TRUE,
  263.             WA_SimpleRefresh,    TRUE,
  264.         TAG_DONE))
  265.         {
  266.             struct IntuiMessage    *Message;
  267.             struct Gadget *MsgGadget;
  268.             ULONG MsgClass;
  269.             BOOL Done;
  270.  
  271.             GuideContext(CONTEXT_CLIP);
  272.  
  273.             PushWindow(PanelWindow);
  274.  
  275.             LT_ShowWindow(Handle,TRUE);
  276.  
  277.             Done = FALSE;
  278.  
  279.             do
  280.             {
  281.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  282.                     break;
  283.  
  284.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  285.                 {
  286.                     MsgClass    = Message->Class;
  287.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  288.  
  289.                     LT_ReplyIMsg(Message);
  290.  
  291.                     if(MsgClass == IDCMP_GADGETUP)
  292.                     {
  293.                         switch(MsgGadget->GadgetID)
  294.                         {
  295.                             case GAD_USE:
  296.  
  297.                                 LT_UpdateStrings(Handle);
  298.  
  299.                                 UseIt = Done = TRUE;
  300.                                 break;
  301.  
  302.                             case GAD_CANCEL:
  303.  
  304.                                 Done = TRUE;
  305.                                 break;
  306.                         }
  307.                     }
  308.                 }
  309.             }
  310.             while(!Done);
  311.  
  312.             PopWindow();
  313.         }
  314.  
  315.         LT_DeleteHandle(Handle);
  316.     }
  317.  
  318.     if(UseIt)
  319.         SwapConfig(LocalConfig,PrivateConfig);
  320.     else
  321.         SaveConfig(LocalConfig,PrivateConfig);
  322.  
  323.     return(UseIt);
  324. }
  325.